package com.snj.twelve;

import java.time.LocalDate;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
import java.util.*;
import java.util.Date;

public class SampleRecordProcessor {

    public static Map<String, List<SampleRecordVo>> categorizeRecords(List<SampleRecordVo> recordList) {
        // 创建结果 Map
        Map<String, List<SampleRecordVo>> resultMap = new HashMap<>();
        resultMap.put("大于一个月", new ArrayList<>());
        resultMap.put("大于两个月", new ArrayList<>());
        resultMap.put("大于三个月", new ArrayList<>());
        resultMap.put("更久", new ArrayList<>());

        // 获取当前日期
        LocalDate currentDate = LocalDate.now();

        // 遍历记录列表
        for (SampleRecordVo record : recordList) {
            // 将 createTime 转换为 LocalDate
            LocalDate createDate = record.getCreateTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

            // 计算与当前日期的月份差
            long monthsDifference = ChronoUnit.MONTHS.between(createDate, currentDate);

            // 根据月份差分类
            if (monthsDifference > 3) {
                resultMap.get("更久").add(record);
            } else if (monthsDifference > 2) {
                resultMap.get("大于三个月").add(record);
            } else if (monthsDifference > 1) {
                resultMap.get("大于两个月").add(record);
            } else if (monthsDifference > 0) {
                resultMap.get("大于一个月").add(record);
            }
        }

        return resultMap;
    }

    public static void main(String[] args) {
        // 示例数据
        List<SampleRecordVo> recordList = new ArrayList<>();
        recordList.add(new SampleRecordVo(new Date(124, 3, 15))); // 2024年4月15日
        recordList.add(new SampleRecordVo(new Date(124, 2, 15))); // 2024年3月15日
        recordList.add(new SampleRecordVo(new Date(124, 1, 15))); // 2024年2月15日
        recordList.add(new SampleRecordVo(new Date(123, 11, 15))); // 2023年12月15日

        // 处理数据
        Map<String, List<SampleRecordVo>> categorizedRecords = categorizeRecords(recordList);

        // 输出结果
        for (Map.Entry<String, List<SampleRecordVo>> entry : categorizedRecords.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue().size() + "条记录");
        }
    }
}

// 示例的 SampleRecordVo 类
class SampleRecordVo {
    private Date createTime;

    public SampleRecordVo(Date createTime) {
        this.createTime = createTime;
    }

    public Date getCreateTime() {
        return createTime;
    }

    @Override
    public String toString() {
        return "SampleRecordVo{createTime=" + createTime + "}";
    }
}